L'instruction GROUP BY regroupe les lignes avec les mêmes valeurs en lignes récapitulatives, telles que "trouver le nombre de clients dans chaque pays".
L'instruction GROUP BY est souvent utilisée avec des fonctions d'agrégation (COUNT(), MAX(), MIN(), SUM(), AVG()) pour regrouper un jeu de résultats par une ou plusieurs colonnes.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)
Voici un exemple de la table "Customers" ("Clients") de la base de données "Northwind" :
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
L'instruction SQL suivante répertorie le nombre de clients dans chaque pays :
Run SQLSELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
L'instruction SQL suivante répertorie les clients de chaque pays, triés du plus élevé au plus bas :
Run SQLSELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC
Voici un exemple de la table "Orders" ("Commandes") de la base de données "Northwind" :
ProductID | OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|---|
1 | 10248 | 90 | 5 | 1996-07-04 | 3 |
2 | 10249 | 81 | 6 | 1996-07-05 | 1 |
3 | 10250 | 34 | 4 | 1996-07-08 | 2 |
4 | 10251 | 84 | 3 | 1996-07-08 | 1 |
5 | 10252 | 76 | 4 | 1996-07-09 | 2 |
Et l'exemple de la table "Shippers" ("Expéditeurs") :
ShipperID | ShipperName | Phone |
---|---|---|
1 | Speedy Express | (503) 555-9831 |
2 | United Package | (503) 555-3199 |
3 | Federal Shipping | (503) 555-9931 |
L'instruction SQL suivante répertorie le nombre de commandes envoyées par chaque expéditeur :
Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName